package com.zc.custom.service;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.zc.custom.domain.ChargeCustomOrderInfo;
import com.zc.custom.domain.ChargeCustomOrderInfoDetails;
import org.apache.ibatis.annotations.Param;

/**
 * 用户订单Service接口
 *
 * @author glb
 * @date 2023-05-19
 */
public interface IChargeCustomOrderInfoService
{
    /**
     * 查询用户订单
     *
     * @param orderInfoId 用户订单主键
     * @return 用户订单
     */
    public ChargeCustomOrderInfo selectChargeCustomOrderInfoByOrderInfoId(Long orderInfoId);

    /**
     * 查询用户订单统计
     *
     * @return 用户订单统计
     */
    public HashMap getInfoCount();

    /**
     * 查询用户订单列表
     *
     * @param chargeCustomOrderInfo 用户订单
     * @return 用户订单集合
     */
    List<ChargeCustomOrderInfo> selectChargeCustomOrderInfoList(ChargeCustomOrderInfo chargeCustomOrderInfo);

    /**
     * 新增用户订单
     *
     * @param chargeCustomOrderInfo 用户订单
     * @return 结果
     */
    int insertChargeCustomOrderInfo(ChargeCustomOrderInfo chargeCustomOrderInfo);

    /**
     * 修改用户订单
     *
     * @param chargeCustomOrderInfo 用户订单
     * @return 结果
     */
    int updateChargeCustomOrderInfo(ChargeCustomOrderInfo chargeCustomOrderInfo);

    /**
     * 批量删除用户订单
     *
     * @param orderInfoIds 需要删除的用户订单主键集合
     * @return 结果
     */
    int deleteChargeCustomOrderInfoByOrderInfoIds(Long[] orderInfoIds);

    /**
     * 删除用户订单信息
     *
     * @param orderInfoId 用户订单主键
     * @return 结果
     */
    int deleteChargeCustomOrderInfoByOrderInfoId(Long orderInfoId);

    /**
     * 获取指定时间段内设备充电记录
     * @param deviceCode
     * @param startDate
     * @param endDate
     * @return
     */
    List<ChargeCustomOrderInfo> getOrderList(String deviceCode, String portId, Date startDate, Date endDate);

    /**
     * 获取电费详情
     * @return
     */
    List<ChargeCustomOrderInfoDetails> getOrderInfoDetailsList(ChargeCustomOrderInfo chargeCustomOrderInfo);

    void/*ChargeCustomOrderInfo*/ getOrderPriceDetails(ChargeCustomOrderInfo chargeCustomOrderInfo) throws Exception;

    Map<String,Object> getOrderPriceList(ChargeCustomOrderInfo chargeCustomOrderInfo) throws Exception;
}
